//
//  CAMediaTimingFunction.swift
//  Documentation
//
//  Created by Toj on 8/9/23.
//

import UIKit

public struct CAMediaTimingFunctionName : Hashable, Equatable, RawRepresentable, @unchecked Sendable {

    public init(rawValue: String)
}

/* Represents one segment of a function describing a timing curve. The
 * function maps an input time normalized to the range [0,1] to an
 * output time also in the range [0,1]. E.g. these functions are used
 * to define the pacing of an animation over its duration (or over the
 * duration of one keyframe). */

@available(iOS 2.0, *)
open class CAMediaTimingFunction : NSObject, NSSecureCoding {

    
    /* A convenience method for creating common timing functions. The
     * currently supported names are `linear', `easeIn', `easeOut' and
     * `easeInEaseOut' and `default' (the curve used by implicit animations
     * created by Core Animation). */
    
    public convenience init(name: CAMediaTimingFunctionName)

    
    public init(controlPoints c1x: Float, _ c1y: Float, _ c2x: Float, _ c2y: Float)

    
    /* 'idx' is a value from 0 to 3 inclusive. */
    
    open func getControlPoint(at idx: Int, values ptr: UnsafeMutablePointer<Float>)
}
extension CAMediaTimingFunctionName {

    
    /** Timing function names. **/
    @available(iOS 2.0, *)
    public static let linear: CAMediaTimingFunctionName

    
    @available(iOS 2.0, *)
    public static let easeIn: CAMediaTimingFunctionName

    
    @available(iOS 2.0, *)
    public static let easeOut: CAMediaTimingFunctionName

    
    @available(iOS 2.0, *)
    public static let easeInEaseOut: CAMediaTimingFunctionName

    
    @available(iOS 3.0, *)
    public static let `default`: CAMediaTimingFunctionName
}
